package com.curator;

import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;
import org.junit.Test;

public class Base {

    @Test
    public void test() throws Exception {
        //首先创建重试策略，用的是接口对象接收的，这个接口有多个实现类
        //有很多种重试策略，这只是其中的一种（每个实现类应该都是一种重连策略）
        RetryPolicy retryPolicy =new ExponentialBackoffRetry(2000,2);
        //有多重获取客户端你的方式，这只是其中的一种
        CuratorFramework curatorFramework = CuratorFrameworkFactory.newClient("192.168.1.120", retryPolicy);
        curatorFramework.start();//开启连接

        //给指定路径创建节点，并赋值，创建节点有两个方法（一个带赋值的一个不带）
        curatorFramework.create().forPath("/curatorFramework","helloworld".getBytes());

        //递归创建节点
        curatorFramework.create().creatingParentsIfNeeded().forPath("/cur3/cuChildren","cuChild".getBytes());

        //创建不带数据的临时节点
        curatorFramework.create().withMode(CreateMode.EPHEMERAL).forPath("/t2");

        //返回值是一个字节数组,装换成字符串来进行输出
        System.out.println(new String(curatorFramework.getData().forPath("/curatorFramework")));

        //修改数据
        curatorFramework.setData().forPath("/curatorFramework","hello".getBytes());
        System.out.println(new String(curatorFramework.getData().forPath("/curatorFramework")));

        //直接删除节点
        curatorFramework.delete().forPath("/curatorFramework");

        //递归删除节点
        curatorFramework.delete().deletingChildrenIfNeeded().forPath("/cur3");

        curatorFramework.close();
    }
}
